/**
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pac;

import java.sql.*;
import org.apache.log4j.*;
import org.apache.log4j.xml.DOMConfigurator;

public class Connect {
    private static final Logger Log = Logger.getLogger(Connect.class);
    public static final String USER_NAME = "root";
    

    /**
     * Creates DB connection
     * 
     * @param className
     * @param userName
     * @param password
     * @param url
     * @return 
     * @throws InstantiationException
     * @throws IllegalAccessException
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public static Connection createConnection(
        final String className,
        final String userName,
        final String password,
        final String url
    ) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {

        // коннект не проходит с внешней БД, с локальной проходит, вероятнее всего отпинывает сервак.
        Class.forName(className).newInstance();
        Connection conn = DriverManager.getConnection(url, userName, password);

        return conn;
    }
    
    /**
     * Comment
     * @param args command line argument
     * @throws Exception
     */
    public static void main (String[] args) {   
        DOMConfigurator.configure("log4j.xml");
        Connection conn = null;        
        try { 
            String userName = USER_NAME;
            String password = "666";
            String url = "jdbc:mysql://localhost/st_druzhinin";

            conn = Connect.createConnection("com.mysql.jdbc.Driver", userName, password, url);
            Log.debug ("Создано соединение: " + conn); // создали соединение, вывели о нем инфу
   
            DatabaseMetaData dma = conn.getMetaData(); // проверяем, куда прицепились, выводим.
            Log.debug("База: " + dma.getURL());

           String sql = "SELECT department.name, subject.name, group.name, tutor.last_name FROM `department`, `subject`, `lesson`, `group`, `tutor`" +
               "WHERE lesson.id=subject.id=group.id=tutor.id=department.id AND lesson.status IN (?)"; // формируем запрос к БД st_druzhinin в таблицу students, выводим на экран.
           System.out.println(sql);
           
           PreparedStatement stmt = conn.prepareStatement(sql);  // создаем оператор
           stmt.setString(1, "1");
           ResultSet r = stmt.executeQuery(); // Сюда складываем результат запроса к БД

            while (r.next()) {
                ResultSetMetaData md = r.getMetaData(); // Передаем экземпляр таблицы
                int cnt = md.getColumnCount(); // Подсчитываем количество полей
                int j=1; // Устанавливаем начальное поле в 1 СЮРПРИЗ! Отсчет идет с 1!!!!
                System.out.print("Запись = "); // Выводим значение строки
                while (j<= cnt ){ // перебираем поля в строке
                    System.out.print(r.getObject(j)); //выводим значение поля
                    System.out.print(' '); //разделяем поля пробелом
                    j++;
                }
                System.out.println(' '); // Переходим на новую строку :)
            }
        } catch (Exception ex) {
            Log.error(ex);
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                    System.out.println ("Database connection terminated");
                } catch (Exception e) { }
            }
        }
    }
}
